{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "cbbf919e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入相关包\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from pylab import *\n",
    "from matplotlib.ticker import MultipleLocator\n",
    "from sklearn import datasets, ensemble\n",
    "from sklearn.inspection import permutation_importance\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.model_selection import train_test_split\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e23ddea7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>F_1</th>\n",
       "      <th>F_2</th>\n",
       "      <th>F_3</th>\n",
       "      <th>F_4</th>\n",
       "      <th>F_5</th>\n",
       "      <th>F_6</th>\n",
       "      <th>F_7</th>\n",
       "      <th>F_8</th>\n",
       "      <th>F_9</th>\n",
       "      <th>F_10</th>\n",
       "      <th>...</th>\n",
       "      <th>F_26</th>\n",
       "      <th>F_27</th>\n",
       "      <th>F_28</th>\n",
       "      <th>F_29</th>\n",
       "      <th>F_30</th>\n",
       "      <th>F_31</th>\n",
       "      <th>F_32</th>\n",
       "      <th>F_33</th>\n",
       "      <th>F_34</th>\n",
       "      <th>F_35</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.711</td>\n",
       "      <td>-0.696</td>\n",
       "      <td>-0.794</td>\n",
       "      <td>-0.727</td>\n",
       "      <td>-0.747</td>\n",
       "      <td>-0.792</td>\n",
       "      <td>1.539</td>\n",
       "      <td>2.433</td>\n",
       "      <td>-0.136</td>\n",
       "      <td>1.295</td>\n",
       "      <td>...</td>\n",
       "      <td>0.093</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.073</td>\n",
       "      <td>0.344</td>\n",
       "      <td>0.006</td>\n",
       "      <td>-0.446</td>\n",
       "      <td>-0.502</td>\n",
       "      <td>-0.456</td>\n",
       "      <td>-0.457</td>\n",
       "      <td>-0.830</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.909</td>\n",
       "      <td>-0.903</td>\n",
       "      <td>-0.947</td>\n",
       "      <td>-0.844</td>\n",
       "      <td>-0.856</td>\n",
       "      <td>-0.908</td>\n",
       "      <td>-0.371</td>\n",
       "      <td>0.990</td>\n",
       "      <td>-0.935</td>\n",
       "      <td>0.479</td>\n",
       "      <td>...</td>\n",
       "      <td>0.098</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.055</td>\n",
       "      <td>0.298</td>\n",
       "      <td>0.007</td>\n",
       "      <td>-0.523</td>\n",
       "      <td>-0.558</td>\n",
       "      <td>-0.533</td>\n",
       "      <td>0.113</td>\n",
       "      <td>-0.887</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.920</td>\n",
       "      <td>-0.925</td>\n",
       "      <td>-0.923</td>\n",
       "      <td>-0.852</td>\n",
       "      <td>-0.853</td>\n",
       "      <td>-0.915</td>\n",
       "      <td>-0.334</td>\n",
       "      <td>0.792</td>\n",
       "      <td>-0.532</td>\n",
       "      <td>0.334</td>\n",
       "      <td>...</td>\n",
       "      <td>0.086</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.067</td>\n",
       "      <td>0.324</td>\n",
       "      <td>0.006</td>\n",
       "      <td>-0.535</td>\n",
       "      <td>-0.564</td>\n",
       "      <td>-0.540</td>\n",
       "      <td>0.367</td>\n",
       "      <td>-1.021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.926</td>\n",
       "      <td>-0.931</td>\n",
       "      <td>-0.943</td>\n",
       "      <td>-0.837</td>\n",
       "      <td>-0.850</td>\n",
       "      <td>-0.907</td>\n",
       "      <td>-0.993</td>\n",
       "      <td>-0.006</td>\n",
       "      <td>-0.826</td>\n",
       "      <td>0.391</td>\n",
       "      <td>...</td>\n",
       "      <td>0.091</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.076</td>\n",
       "      <td>0.276</td>\n",
       "      <td>0.010</td>\n",
       "      <td>-0.534</td>\n",
       "      <td>-0.554</td>\n",
       "      <td>-0.521</td>\n",
       "      <td>0.550</td>\n",
       "      <td>-0.211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.750</td>\n",
       "      <td>-0.764</td>\n",
       "      <td>-0.818</td>\n",
       "      <td>-0.749</td>\n",
       "      <td>-0.764</td>\n",
       "      <td>-0.816</td>\n",
       "      <td>1.116</td>\n",
       "      <td>1.447</td>\n",
       "      <td>-0.547</td>\n",
       "      <td>0.939</td>\n",
       "      <td>...</td>\n",
       "      <td>0.099</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.079</td>\n",
       "      <td>0.328</td>\n",
       "      <td>0.008</td>\n",
       "      <td>-0.468</td>\n",
       "      <td>-0.500</td>\n",
       "      <td>-0.419</td>\n",
       "      <td>-0.236</td>\n",
       "      <td>0.644</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 35 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     F_1    F_2    F_3    F_4    F_5    F_6    F_7    F_8    F_9   F_10  ...  \\\n",
       "0 -0.711 -0.696 -0.794 -0.727 -0.747 -0.792  1.539  2.433 -0.136  1.295  ...   \n",
       "1 -0.909 -0.903 -0.947 -0.844 -0.856 -0.908 -0.371  0.990 -0.935  0.479  ...   \n",
       "2 -0.920 -0.925 -0.923 -0.852 -0.853 -0.915 -0.334  0.792 -0.532  0.334  ...   \n",
       "3 -0.926 -0.931 -0.943 -0.837 -0.850 -0.907 -0.993 -0.006 -0.826  0.391  ...   \n",
       "4 -0.750 -0.764 -0.818 -0.749 -0.764 -0.816  1.116  1.447 -0.547  0.939  ...   \n",
       "\n",
       "    F_26  F_27   F_28   F_29   F_30   F_31   F_32   F_33   F_34   F_35  \n",
       "0  0.093   0.0  0.073  0.344  0.006 -0.446 -0.502 -0.456 -0.457 -0.830  \n",
       "1  0.098   0.0  0.055  0.298  0.007 -0.523 -0.558 -0.533  0.113 -0.887  \n",
       "2  0.086   0.0  0.067  0.324  0.006 -0.535 -0.564 -0.540  0.367 -1.021  \n",
       "3  0.091   0.0  0.076  0.276  0.010 -0.534 -0.554 -0.521  0.550 -0.211  \n",
       "4  0.099   0.0  0.079  0.328  0.008 -0.468 -0.500 -0.419 -0.236  0.644  \n",
       "\n",
       "[5 rows x 35 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_bank = pd.read_csv(\"./dataset/train_90.csv\") # 读取文件\n",
    "X=df_bank.iloc[:,2:-2]\n",
    "y=df_bank['consume_index']\n",
    "X.head() #显示新的特征集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "e3fbcb91",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据集准备，将数据集分为训练集和测试集\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    X, y, test_size=0.1, random_state=201)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "86bfc1c4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GradientBoostingRegressor(max_depth=6, min_samples_split=5)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GradientBoostingRegressor</label><div class=\"sk-toggleable__content\"><pre>GradientBoostingRegressor(max_depth=6, min_samples_split=5)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "GradientBoostingRegressor(max_depth=6, min_samples_split=5)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 定义模型参数进行训练\n",
    "params = {\n",
    "     \"n_estimators\": 100,     # 模型中弱学习器（决策树）的数量。它表示模型进行多少次迭代来逐步改进预测。\n",
    "    \"max_depth\": 6,           # 决策树的最大深度。它决定了每棵决策树能够学习的特征和规则的复杂程度。\n",
    "    \"min_samples_split\": 5,   # 决策树分裂一个节点所需的最小样本数量。这个参数可以控制模型对训练数据的拟合程度。\n",
    "    \"learning_rate\": 0.1,    # 学习率控制了每个弱学习器在模型中的贡献程度。\n",
    "}\n",
    "reg = ensemble.GradientBoostingRegressor(**params)\n",
    "reg.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "79741cac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1f6923b18b0>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ4AAAGTCAYAAAAY4nTRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAAxOAAAMTgF/d4wjAAB5NklEQVR4nO3deZxcVZ338c9dqqr3fe9OJ52ls5MNSEiAbCxRkEVRdAYxIIqKjvMgzjD6zIyizgjDExx1cFxYFFAQFTEiSwIkLAkJSxKSQBLI0vtavVZ3dde9557nj9vd6c4CSTqpLP17z6uHdHUtt66V/uac+zu/Y2itNUIIIUScmCf7AIQQQowsEjxCCCHiSoJHCCFEXEnwCCGEiCsJHiGEEHElwSOEECKuJHiEEELElX2yD6BfKBQiNzf3ZB+GEEKIYWpqaqK3t/ewPz9lgic3N5fq6uqTfRhCCCGGqaSk5AN/LlNtQggh4kqCRwghRFxJ8AghhIgrCR4hhBBxJcEjhBAiriR4hBBCxJUEjxBCiLiS4BFCCBFXp8wC0uHQWg98CXEqMAxj4EuIU5FSiuqa+iO6b0lxAZZlHbfXPuLg6ejoYMGCBaxcuZIxY8awdu1avv71r9Pd3c3SpUv5yU9+gm3b1NTUcN1111FfX09hYSGPPvooeXl5x+2AB4tGo4TDYSKRiISOOCUlJCSQnJxMdnb2cf2LK8RwVdfUU/PCOxRnZ3/g/WrCYVgCo0uLj9trH1HwrF+/ni9+8Yvs3LkTgN7eXq6//npWrVrFhAkTWL58Offddx8333wzt9xyC8uXL+dzn/sc999/P1//+tf53e9+d9wOuF80GqWyspKMjAzGjBlDIBA47q8hxHAopYhGo7S1tbFv3z5KS0vlcypOKcXZ2YzOz4/76x5R8PziF7/g3nvv5bOf/SwAGzduZOzYsZSXlwPw+c9/nu985zvceOONvPjiizz++OMAXH/99fzjP/4jjuMc979w4XCYjIwM8k/CSRPiSFiWRTAYJC0tjZqaGsLhMAUFBSf7sIQAQCmP+ubmD71fTXMzBer4NnA+ouKCBx54gAsuuGD/gdTUUFy8f9hVVFREdXU14XCY1NTUgZCxbZu0tDSampqO60FrrYlEIqSnpx/X5xXiRDAMg6ysLNrb22VKWJwy6huacLp6Iep+4JfT1Ut9w/H9HX5MxQWe5x10m2mah7y9/2cHWrFiBStWrBj4PhKJHPHr9xcSyLSFOF2EQiE8z0NrLQUH4pRRlJnF6NwPvgYfcxyOb+wcY/CUlJRQV1c38H1dXR0lJSXk5ubS0dGB67rYto3runR2dpJ9iItXt956K7feeuuQ5zxS8q9GcbqSz66It8NVr9U3NpNDEt6gz6RhGMTjn0XHFDxz585l165d7Nixg0mTJvHAAw9w2WWXEQgEWLhwIY888gif+9zneOSRR1i0aJGMTIQQ4iSpqKxl85/XU5CRMeT25n37qM3OJ2D6MaC1ZlReHoE4VF8eU/CEQiEefvhhPvOZzxCNRjn33HO55ZZbALj33nu54YYbuOuuu8jKyuKRRx45rgcshBDigymlqKispaa2gZdefZ2ZZjZJeuiv+5nFo0kKBHFcF4C6tlY8A8YXFJ7w4zuq4Nm3b9/AnxcuXMimTZsOus+oUaNYvXr1sA9MHB9yTeHIybkSZ4qKylr2PruZzEASo7uCjCnLY1z+0EDRaAz2L3J2laKutSUuwSMtc85gv/vd7/jMZz5zQl/jwQcfxDAMrrvuuhP6Oody3XXXYRgGDz744LCeZ9euXXzkIx9h9+7dx+fAhDhJ/JFODZu3vkt+YhoT8gsozsohaNuEAoGhX3aAoG0PfAVsC1e59DrOkC/HU8f9OM+IljniYC+99BJ/93d/x4IFC072oZzyli1bxt69e0/2YQgxLEopNry+hdpXd/F+TQ0po8owtKahvQ3TgIC1/9d9SXYO5gGjew3E0JA09Jp8IDmBgvzju45HgucMdbjS9uPt6quvZt68eaf1mqp4nSshTpT+0Ln+3Q5iBeNwc8pIS0rANm16yzMIWBbBviIvFW5iJc2U5gwNEwOwAiah4NDgCQZssI7v5JgEjxiW9PT00zp0hDid9RcRbN76LrvWbiM2+wLs3AJsQFs22rJwe6LYnR0Dj9FATUvYXw8JA+XTNeEw9V2tVDQ0DHmNmnCYYo5vhxi5xvMB+udLj+RLqeM/D3qsli9fzuLFiwF49dVXMQyDRYsWAbBmzRoMw+Af//Ef+clPfkJ+fj5JSUlccMEFA//y37VrF1/60pcoLy8nOTmZxMRExo0bxy233EJtbe2Q1zrUNZ7+2370ox+xYcMGPvKRj5CZmUlycjLnn38+K1euPKr389577/HZz36WoqIikpOTWbhwIS+//PJh79/a2sp3vvMdzj77bNLT0wkGgxQWFnLNNdfw+uuvD9yv/1xUVFQAMGHCBAzDGFJE8+abb/LZz36WsrKygYafkydP5vbbb6etre2o3ocQx1tFZS1v/OElUvZ0UZaRTaizk1B7G6H2NqyWZnRTA977O6iu3Mv7wPumyd6MHL6YX8rVSZl8PCmTq/u+bk5MY3tPGGbkD/kqXjKFkuLj2+pJRjwf4GR2bx2O+fPnU1NTw+rVq8nNzeWSSy5h8uTJQ+7z9NNP895777Fo0SIMw6C0tBTTNHn55ZdZtmwZ3d3dzJkzhxkzZtDS0sJrr73Gvffey1//+le2bdtGamrqhx7HCy+8wD/90z9RWFjIokWL2Lt3L6+++ipXXHEFf/jDH/jEJz7xoc/x5ptvcvHFF9Pa2spZZ53FggULeOONN1i6dCljxow56P6NjY3Mnz+f3bt3U1ZWxpIlS4jFYrz55pv88Y9/ZOXKlbz66qucffbZ5Ofn8/d///f8+c9/pquriyuvvJKUlBRSUlIAePzxx/nMZz6D53mcd955nH322TQ0NLB+/XruvPNOnn/+eTZs2HDIzhxCnGhKKV5/axu3J+cTzM3FdRW12sDQQ6eOvaxcaGshuHsnOjMbXA9j/DjshOQh9zOdGOmdqXH5PSbB8yFOVvfW4fjiF79IeXk5q1evpry8nIcffvig++zatYu77rqLb37zm8D+6xy33HIL3d3d/P73v+eTn/zkwP3r6+uZN28eFRUV/OUvf+Hv//7vP/Q4Vq5cyf/5P/+HO++8c2AR8Te+8Q1WrFjBD3/4ww8NHs/z+PznP09rays//OEP+ed//mcAHMfh5ptv5oEHHjjoMd///vfZvXs3X/3qV/nxj388UCra09PDpz/9aZ588kl+/vOfc/bZZzN58mQefvhhxowZQ1dXF3fffTfjx48HIBaL8ZWvfAXLslizZg3nn3/+wGvs2LGDuXPn8sYbb7B+/Xop4BAnxXvvV/KXR57CvOgqTA9iTQ2oYAjMQywANS1insZTHoZycN/bCdNnx/+g+w/npL2yOKksy+IrX/nKwPemaRKJRJgzZw433njjkNABKCgo4OqrrwY44gqwvLw87rrrriGdK77+9a8DsG3btg99/Lp169iyZQuzZs0aCB2AQCDAvffee8h9nrKysli2bBl33HHHkDU5CQkJ3HDDDUd8/PX19Vx66aXceuutQ0IHYNKkSSxZsuSIn0uI40kpxZ69Vfzywd+zasxkGjo7qN2+mXBTA2ZnB2Z769Cvlia89AzccRPBttF2AMfTxNyhZdOu8shI//CZjONBRjwj1Pjx40lOHjrUTklJOeQooqamhs2bN7NlyxbA34/pSMyZMwfbHvoRKyoqAvwRiOd5HzhNtXbtWgA+8pGPHPSzhIQELr30Uh566KEht3/nO9856L6tra1s3bqVZ5999oiPv7S09KCRotaaiooK3nrrrYHAOdJzIcRw9fdc27W7gpcff4HtO3fS/skbUXkF0N9v7RALoK2mesz2Vpxps8C2MRvqcF2HXsfFLy/wxZRLTk5mXN6LBM8IlZWVddifrVu3jl/84he89dZbvP/++0SjUYCBEcSRNrrMzDz4Qzw4iD4sePoLGQZvwTFYWVnZIW/fu3cv//M//8Mrr7zCrl27aG1tPabjB/9a2IMPPsjbb7/Nnj17iMVix/xcQhyraDTKfb/+I3fEsogEQuTMvxSVko3KzUcVjfrA4AEwG+uGfB9THm5PFKU9rIQgCaEgwdQEZkyddKLfCiDBM2Id7hf+Lbfcwr333otpmsyYMYNPfepTTJkyhblz5/Lcc8/xH//xH0f8GsNtP/Nhjz9wNAV+t4brr78e13UZO3YsF110EZMmTeLss89Ga81VV111RK/teR5XXXUVK1euJBAIMHv2bK6//nqmTp3K/Pnz+clPfnLIa2dCHG+xWIy7//sBEuq6sWaNxx01hsZAALum6pifMykUxEpKxEwMkpKcCIaB29s9sNbnRJPgEQPWrl3Lvffey6hRo3jmmWeYMmXKkJ//6U9/iuvx9I90+sudD3RgaXckEuHmm29Ga80TTzxxUMg88cQTR/zaDz30ECtXruSss87ib3/720Gjro6OjsM8UojjRynFH554luj7TVR1tuOGG7CSUzCCAYyuzuE9t+eRELQPO0o6kaS44Ax1LKON9evXA/CJT3zioNBRSvH8888D8Vvpf9FFFwHw5JNPHrROSik1cM2m37Zt2+js7GT69OmHHNk899xzwMHHf6hz1X8ubrzxxoNCJxKJsG7dukM+lxDH05691VSu30liMMhTCy6mo3QsTjBIzDBRx7pzjgYMg0ByQtxGOAeS4DlDJSQkANDe3n7Ej8nN9VtoPP/883R3dw/c3t3dzRe/+EW2b98O+IUB8XDOOedw/vnns3PnTr75zW8O/JL3PI/bbrvtoIqy/uPfuXMnO3fuHLhda83//u//8otf/OKQx3+oc9X/XH/7299w+9rGA4TDYa699lqa+/aqj9e5ECND/6L1PXurWPfaW/zxyWcpSc+ivLCYYHYuOq8Qr/8rPeMYX0Vj9kZI6GzDbajHra/Dra9DNTcez7fygWSq7UPUhMNHdJ/j3VJiuMrKyrAsi23btrF06VLOOuss7rnnng98zCc/+Um+853vsHXrVsaOHct5551Hb28v69ato729nalTp7J9+3bq6w/ezfBEeeCBB1i8eDH33HMPTz31FDNmzGDLli289957zJ07lw0bNgzcd9y4cVxxxRX85S9/YebMmSxatIiEhATeeustKisrmTJlCu+88w4NB7QEmTBhAjt27OCTn/wks2fP5q677uLzn/88P/7xj3nuuecYP348c+bMoaOjg1dffZVoNDrwXPE8F+LMV11Tz97n3qaxpQWnJ0bTnkpCGVn0OC69JRMwG+swgyEwDMz2tiN/Ys/D6Ks/CJgGd5YlMmdiwtD7lI867h0KDkdGPB+gpLiA4iVTDmohEY+WEsOVl5fHfffdR1lZGS+//PIRtalJS0vjtdde48YbbyQxMZGnnnqKDRs2MHv2bB599NGBFjPPPvssjuPE4V34Zd8bN27ky1/+Mt3d3axcuZLU1FSefPJJli1bdtD9H330Ue644w7KyspYs2YNq1evJjs7mx/+8Ie8+eabTJ8+ndraWt58882Bx9xzzz0sXLiQ+vp6Vq9ezc6dOxkzZgwbN27kmmuuwXVd/vKXv/D222+zePFinnvuuYEy7qNt/yPEh2lsaaE30kNKIETAsPAMwy8GqNmHUbkXM9yE2dyI0Xnk1xkNrUF74DiYLU0U5OUwurT4oC8rDruP9h3PqVEPWlJSQnV19RHdVynFrl27KC8vj9uJEmI45DMrPoxSirWvvM7D9z7GqPRs6tvbePr8iwnm5NHrujQGgqhAEAL+RFXwjfXEzpqDKi794HU8tVWkbt5IwviJhGLdrMhXXL5sEcFg8IS9lw/7fS5TbUIIcZJFo1F+/ds/89fHV7Hh4qtJLSjCq9hNc34BXlYejnLRlgV2AN23jMAtHoXV3IjfX1rv/68G0AO/3M2mBr7eVM0FxTkkzixi7jkzTvo/fiR4hBAijvq3MqhvaEIpj9r6JlY+/QKTQznMKR3Lm5aJ29JEi20Ts4J4oRBah/wHDxrQOBOnENixHXvvLjBNvMwscBRmcwNZNfv4u+5OOqNRpo0ezfxz5hHRDsVF+Sc9dECCRwgh4qq6pp6PvFJBLJCEiUW0N5PYeVfyx8QktAZlGpjtrehAECzDH+lg9IWOsX86zQ7gTJuF1VgPto3KLQAnhl2TBm6MwrZG6qwepl12Dr2hIKPyc0+Za9ESPEIIEUdKefQmphLMzMXzNPREUbXVqNYwmCaGAUZbK1ZnB16kEzPsl+5jgJeZg8ovPHQHav8u2Boyn3qUrK/dyK+u+TKJiYnxe3NHSIJHCCHiqKq6nu6WblRtLVpDa2cHWBZk5+Jl5gDgZef7Ixtj0AhHuZjhRrAsVF7h/ifUGlwXXAdDKQzb5O8/eTk3fPbjJ+HdHRkJHiGEiAOlFO/truDnDzyKUzSN9pIxqNx8zKZGQOHlFQwKlL5igcHB4zpgHeZXtgZTKQJoMG2yMk/t7egleIQQ4gRTSvHK+jfZ9cwmMqMmMSeGNi0I2JhdHXjJKUND5nCLXA51u2H4++xYtr9WxzDIyY7P9gbHSoJHCCFOkP4Kttde38y6la8SMm1efnc77vmX4GXnMFCmZlpDgwc4bPpovX/djtb+FFxbCzguJhqzpRkz/9TuDSDBI4QQJ0AsFuOvz6xh07MbyQom82RRGY5SdM0OYbS1YgaC/sZs7W3+iKc/UA4Mn/780Ro8F7N5UBsv18UON2MCRnMDoyLtKM8jd+qoOL7ToyfBI4QQx1ksFuP+h/6I824jVQ1NbAjvoPFTN6CycjFbw4Ou27h4SUl9j9KDwgc4VPdp7YHTC66L5SnMcBO5zY0kTpiEbm/l/iy/gq2g8NTqHXkgCR4hhDjO1m/Ywr+2p9A5czzetLnY2zahTRsz0oHZHcHLGLQDcCCA2dkBwSAqJ9+fdtMaOHD047NjMbTrkNzVid0T5W5i5DVU4AYNCrKKqG9txbJkqk0IIUaUjW9uoas7Ga+zA7OjHTV6LF5mBmDgpaUPqU7z0rP8KbT2Vqxw0/7KtgPbaGrAccjZ9S6mZTH1iUe4ePoMzpp9DtUtYTqKErFmFlJM4SmzUPRwJHiEEOI46t81VH3mK3i5+WDZeFl9Cz/79Y1kDNfdf13nwFLpA4sNDMC0UNrFdVz+4SMfIyEtmbKyUVjJIazphYwuHbpp4alKgucMp7U+pt1IT9fX/SCn4jGJM4NSiuqaeiJdUX7xwGO0NLehcvJQRSXQ19QTe9Bun32fQ01f+Ch/AagZbgLHZaCiYPDn1XWwWsJ8pKGWT08oJy8zm/fbGqlvbaGpo51i6/QIHZDgOaP97ne/48knn+TRRx+N22v29PRw1113Yds23/rWt4b1XO+//z4TJkxg9OjR7Nu375ifRynF//7v/7Jz505+/OMfD+uYhDiUPXuref3xtbyyfRumgs5ps/rCxAWlwDTZX5429B8/2rL90Y5h+IUHysHsioDy/Go3ywTDwmxrwWppojQ3nxmTJtDU0UbuxHEwKp9i8k/56bXBTu0rUOKYvfTSS/zd3/3dEe9xdLzcdddd/Pu///uQrbNPtkceeYSvfvWrtLS0nOxDEWcgpRR/e24tdY1h/jp3Kb/66KdonzoTs60Nq7HBH8Uo5YeQ449sBr76dzMIBCCUgDtuIu64ybijJ+ClpaMTEtFJqRjBEGZyClft2MzZU8rpivXS1t1N6ajCuG/idjzIiOcM5XneiHrdD3IqHpM4vfVPrQG8v7uCyo3v8ejYyTTmF6I9hZVbgJeTC7bVN2Lpb3/D/lk01wUY2F+nn+HE/C7TlXsxot2owlGkdraSkFtAUV4+qXNGY5ScfqOcwSR4hBDiKFXX1FO5ehtozQsbNvJIVxdtaIyWMFZrM27pWH+bgoCNXxZtDr3GQ99g5xBbyGvTxPAUoHEmTMYwLayAjZGdw9nl5ZSWnD5FBIcjU20fwG93UXNEX0qpk324A5YvX87ixYsBePXVVzEMg0WLFg25z3vvvcfy5cspKSkhGAxSUlLCTTfdREVFxUHP19PTw/e+9z1mz55NWloaqampzJ49m//4j/8YMqU2ZswYvvvd7wLwgx/8AMMw+M53vvOhx6u15uc//zmzZ88mOTmZkpISbr/9dqLR6GEf8/zzz3PNNddQUlJCKBQiNTWVmTNn8oMf/IDe3t6B+y1atIgbbrgB8KfcDMNg+fLlAz+PRqOsWLGCBQsWkJWVRSAQIDc3l49+9KM899xzH3rsYiTTXN/Qwf+beg4tiy/D7OnB7GwHy8bsbMdqqsdqrPen2txBU2wHtsLRgxaOKn8UhGXj5heT9drL5DbXEczJJRjrZtQFk07bUc5gMuL5ANU19Vy+rgorJ+8D76eaG/nrfE6Zf4XMnz+fmpoaVq9eTW5uLpdccgmTJ08e+Pnzzz/PlVdeSVdXF9OmTWPevHns2rWL++67jyeeeILnnnuOOXPmAH4oXHHFFaxatYri4mIWL16M53m8/PLLfPvb32bVqlW88MILGIbB1VdfzfPPP8/WrVuZNm0aM2bM4KyzzvrQ4/3c5z7HQw89REpKChdddBHd3d38v//3/1i5cuUh779ixQq+8Y1vEAgEWLBgAeeddx5VVVVs3LiRLVu28Oabb/KnP/0JgIsvvphYLMb69espKytj/vz5zJ8/H/ADdeHChbz++usUFhayYMECTNNky5YtPP300zzzzDM88cQTXHnllcP9n0ScIZRS7NlXxd+eeYnYrkYiTWEYP5nQ+zvQ6RkDa2/M9laorQLA6OzAGT8ZXAcvOxdNwqDRj8ZwHT+KXBezpRm0xuxohWCQiztaWFBgMHWsRXHRWEaXFp1W13IOR4LnQ1g5edgFhR9+x1PIF7/4RcrLy1m9ejXl5eU8/PDDAz8Lh8Nce+219PT08Pvf/55PfvKTAz/7xS9+wc0338ynPvUp3n33XYLBIK+88gqrVq1i4cKFrFq1ikDA/wvT3NzM3LlzWbNmDWvXrmXRokXcc889fOc732Hr1q1ceeWVfP/73//QY/3jH//IQw89xLhx41izZg0lJSUAvPnmm1x00UUH3b+uro5/+Zd/ITMzk/Xr1zNx4sSBn7388sssWbKEJ554gurqakpKSvj2t79NcXEx69evZ/78+UPOxb333svrr7/OlVdeyeOPPz7w3pRS/MM//AP33nsvP/3pTyV4BOB/Lta9tommV3fx5msbWLVlC9GFl2L2dBO7YCkqO+fQD3Q9sEzMtlbMlma83AK/mMB1wYmB50EghNnajNnehr13N0ZqKio9i7FnT+ALN3zqjAibwSR4Rphf/epXhMNhvva1rw0JHfAD669//SsrV67kT3/6E5/+9Kepq6sDoLCwcOAXM0BOTg6//OUvqaysZOzYscd8PD/72c8AfxTTHzoAc+bM4V//9V/5xje+MeT+9fX1XH311cybN29I6ABccMEFTJs2jc2bN7Nv374hz3cowWCQj370o/zwhz8c8t4sy+KLX/wi9957L3v37j3m9yZOf/3dpWtqG9i6fSdvrn6DcFs7q8dMxDg7BXfqTLyUVLzcfFTeoafADMfpm2pzCe7chgt4uQWY4SbsPbvwMrNxS8vwklPRwRBjH/45i6efReKYHL75rVvOuNABCZ4R58UXXwQYuAZ0oGXLlrFy5UrWrFnDpz/9ac477zwCgQCPPvooHR0dXH311SxbtoySkhKWLFkyrGPpn7KzLIuLL774oJ9fddVVBwXPrFmzDlqXpJRiz549vP766wMl04Ov8xzOV7/6Vb761a8Oua2zs5N33nmHv/3tb0f8POLMVV1Tz6Y/r+dfknNxUybRPStER1cn7qgxEIvhZedBKOQvEj2geKBff8U0poWXnoGXnoWXmQ3Kwejuwp02GyMWw9QaqzvCrR+7mvkzp5NwTikpKSlxfLfxI8EzwlRWVgLw8Y9/8La4VVX+/PSoUaN46KGH+OIXv8jf/va3gV/IU6dO5eMf/zg333wzxcXHdm0rHA4Ti8XIzc095L7wY8aMOeTjlFI8/vjjPProo2zbto2KigrcvtLU/s4E+sA+V4fR0NDAz372M1544QV27NhBU1PTMT2POPMopdhXUYvtebiuS7ipEfP3D+J98nP+1tSxXrCPoT7LtvwSatPG6I6Q+OwTkJBAxrTZBINBcrMySUpIxDjFG30OhwTPCNNffXf55ZeTnn747XGnTJky8Odrr72WZcuW8eSTT/L000/z4osvsn37drZv384999zDqlWrmDdv3lEfy4e1rzFN86Bphq6uLpYsWcLGjRtJTEzk7LPP5pJLLmHatGmcf/75fO1rX+Oll146otdfs2YNl19+OV1dXRQXFzN//nwmT57MrFmzGDNmDHPnzj3q9yTOHO/truDPD/6FWKSH2vMvwktIRN/yzxg9PYD2r9PoY1wj1reux8srxOjshLQ0QnmFKO2RRNehmlKfUSR4RpjCwkJ27drF17/+9UNevD+c9PR0rr/+eq6//noA3nrrLb71rW/x7LPP8n//7/9l9erVR30s2dnZJCQkEA6HiUQiB00rNDQ0HFSmfvfdd7Nx40aWLl3KH/7wBzIyMob8vK2t7YheW2vN5z//ebq6uvjpT3/KLbfcMuTnmzZtOur3I84M/dd1fvHA7+ls7+D3KRmotAx0QgJYAYzmer9qDfCSUuBoLsEozy+vNi3McDMoj+CenYQ+fh29aRkkdLZhGRY14TDFnNp76gzHmTuWG+EON5pYuHAhwMCU2YH+6Z/+iVmzZvHLX/4S8H/Rjx49moceemjI/WbPns2dd94J7J+W+6DXPdwxLlmyBM/zePLJJw/6+VNPPXXQbevXrwfga1/72kGhU1NTwzvvvAMM7VZwqGNqaGhgz549ZGRkHBQ6wMAaHul6MLIopVjz8gZ+/L2foyrb+GvRGMyqCszGer9/WjCAl1vgX6M5lmGJp7Cr9mG/sxkr3AiBIImTphJKCJESjaDbW2krClK8ZMoZsV7ncCR4zlAJCQkAtLe3D7n9i1/8IsnJyfzkJz856CL9ypUr+dGPfsSWLVs455xzABg/fjyVlZV873vfo76+fuC+WmseeeQRAM4999wPfd3D+cd//EcAbrvtNt59992B23fs2HHIJqO5ubkDxzr4+ktlZSUf//jHB6719PT0fOAxpaenEwwGaWtr4+WXXx7yGn/605+44447DnoecWZTSvHKurf44y+eoKa+gW37dtO76il0KBEz0jlooecwXsQwwdMEX1+HGW7imm2v8w0cftvbwjMhh98EXWZOn3za9V47WjLV9iFUc+OR3af81NrjvKysDMuy2LZtG0uXLuWss87innvuobi4mN/85jd85jOf4TOf+Qx33HEHkyZNoqqqijfeeAOAH/3oR8ycOROAK6+8kquvvponnniCcePGsWDBAlJTU9m2bRu7du0iPz+f733vewOvO2HCBMAv266uruayyy7jpptuOuxxXnzxxdx+++388Ic/ZNasWQOVci+88AKzZ8+moaFhyP2/+tWv8thjj3Hffffx6quvMm3aNBobG1m3bh1aayZOnMjOnTuHhGT/MT311FNcfvnlzJ8/n29961t86Utf4sc//jGLFy9m4cKFZGRksH37dnbu3Mno0aMJh8O0t7cTjUYPWfwgzgz9U2ubt77L+y9upTYcZnvFPpqTknHmXYgzey6qv3oN/P5rx3gRxuxoxWwL4156JeQXMVP1MHH0aOZNmYxl9o0DzuCign6GPkXKdkpKSo64k7JSil27dlFeXn5C/1UwuBHghykpLjjl/oXy61//mu9+97tUV1dTWlrK+++/P/CzrVu3ctddd/HCCy/Q1NREfn4+M2fO5Bvf+MZB7XV6e3u55557eOyxx9i1axdKKUpKSrjsssv4l3/5FwoK9k8JeJ7HbbfdxkMPPURnZyef/vSnefDBBz/0WB9//HHu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",
      "text/plain": [
       "<Figure size 480x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化训练集和测试集数据\n",
    "ytrain_pre = reg.predict(X_train)\n",
    "ytest_pre = reg.predict(X_test)\n",
    "\n",
    "fig,ax = plt.subplots(figsize=(6, 6), dpi= 80)\n",
    "plt.rcParams['font.sans-serif'] = ['Arial'] #字体均为 Arial\n",
    "plt.rcParams['axes.unicode_minus']=False\n",
    "\n",
    "scatter1 = plt.scatter(x=y_train, y=ytrain_pre, s=80, marker='s',c='#FFBCDE' , alpha=0.8, label='train data', linewidths=0.3, edgecolor='#17223b')\n",
    "scatter2 = plt.scatter(x=y_test, y=ytest_pre,s=80, marker='s',c='#00C8F4' ,alpha=0.8, label='test data', linewidths=0.3, edgecolor='#17223b')\n",
    "ax.plot([0,1],[0,1],'--',c='black',alpha=0.3)\n",
    "plt.legend(loc='upper left',fontsize=20, frameon=True ,labelspacing=0.5)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a9ee3f01",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\anaconda\\envs\\PyTorch\\lib\\site-packages\\sklearn\\utils\\deprecation.py:101: FutureWarning: Attribute `loss_` was deprecated in version 1.1 and will be removed in 1.3.\n",
      "  warnings.warn(msg, category=FutureWarning)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAGGCAYAAAB/gCblAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGkklEQVR4nO3deVhUZf8G8HsAGRiWQUAWEfcVl1RAUUEwTXPNLe1NDcotcyk1NS1f9W2hzbSyUl/T8lUz/eGSu7mgoaIJLimoqaCo4ILJzijw/P6YODEKAsPAGWbuz3Wda2bOOXPme1Dm5nmesyiEEAJERER/s5C7ACIiMi4MBiIi0sFgICIiHQwGIiLSwWAgIiIdDAYiItLBYCAiIh0MBiIi0sFgICIiHQwGMmkhISFQKBTSZGFhAQcHB/j5+eGrr75CXl6eQT8vMjISCoUCkZGRBt0uUVWykrsAosrWrl07fPvttwCA/Px83L9/H7t27cLUqVPx22+/4eeff4aFhWH+Rmrfvj2OHTsGHx8fg2yPSA4KXiuJTFlISAgAFPsX/FdffYU333wTa9aswYgRI6q2MCIjxq4kMluTJk2Cl5cXli5dKs1bsWIFWrZsCaVSibp162L+/PnIz88HAKxbtw4KhQLnzp3T2c6WLVugUChw6tSpYruStmzZgqCgIDg4OECpVKJ58+b45ptvpOWF79m/fz969uwJlUoFDw8PzJo1S/psAHj48CHmzp2Lhg0bwtbWFq1atcKPP/6oU8vWrVvh5+cHGxsbeHh44M0330RWVpYhf2xkBhgMZLYsLCzQvXt3HD9+HHl5eQgPD8e4cePQo0cPbNu2DZMmTcInn3yCcePGAQAGDhwIe3t7rF+/Xmc7P/30E1q2bIl27do98Rk7duzAoEGD4Ovri61btyIiIgINGzbEpEmTcPz4cZ11R4wYgaCgIGzfvh0vv/wyPv30U6xYsUJn+cKFCzFmzBhs374dvXr1QlhYGH766ScA2uAaOHAgmjdvji1btmD+/Pn43//+hxdeeAHsGKByEUQmLDg4WAQHB5e4fObMmQKASExMFLa2tuL111/XWb5ixQoBQJw7d04IIURoaKho1KiRtDwjI0PY2tqKjz/+WAghxMGDBwUAcfDgQSGEEJ9++qkIDQ3V2WZqaqoAIMLDw3Xe89577+ms16BBA9GvXz8hhBB//PGHACAWL16ss87gwYPF2LFjRUFBgahTp454/vnndZbv27dPABDbt29/yk+JSBcHn8msib//kj506BBycnIwYMAAnSOV+vfvDwD49ddf0bJlS4waNQo//vgjfv/9d/j7+2Pr1q3QaDQljlHMmDEDAJCZmYmLFy/i8uXLOHnyJABAo9HorNupUyed13Xq1JG6gaKiogAAgwcP1lknIiICAHDhwgXcuHEDc+bM0ak/ODgYjo6O+PXXX9G3b99y/GTInLEriczajRs3YGtrC0tLSwBAnz59UKNGDWlyd3cHANy6dQsA0K1bN3h5eUndNz/99BNCQkJQp06dYrd/7949DBkyBGq1Gh07dsT8+fORlpYGAE9076hUKp3XFhYWKCgoAACkpqYCANzc3Ir9nMLlb7zxhk79NWrUQHp6ulQ/UVmwxUBmKy8vD5GRkejSpQucnJwAAGvXrkXTpk2fWLcwICwsLDBixAisW7cO7777Lvbu3Yvly5eX+Bkvv/wyLly4gP3796NTp05QKpXIzs7Gf//733LVWljf3bt3dULowoULSE1NlZZ/9tln0pFYRdWsWbNcn0fmjS0GMlvLli1DcnIyJkyYgICAAFhbW+PmzZvw8/OTJisrK8yePRsJCQnS+0aNGoUbN25gwYIFsLKywpAhQ0r8jKioKAwZMgQhISFQKpUAgF27dgGA1Booi8DAQADAtm3bdObPmjULb775Jpo3bw43NzckJCTo1O/l5YV33nkHp06dKvNnEbHFQCYvPT0d0dHRALRfxvfu3cOePXuwbNkyjBw5Uuq3nzlzJubOnYv09HSEhITg5s2bmDt3LhQKBZ555hlpe61atULbtm3x7bffYtiwYXBwcCjxszt06IC1a9fC19cXderUwZEjRxAeHg6FQlGuw0ifeeYZvPjii5gxYways7PRtm1b7Nq1C9u2bcOmTZtgaWmJDz/8EOPHj4elpSX69++PBw8e4P3338eNGzfg6+ur50+PzJLco99ElSk4OFgAkCaFQiEcHR1Fly5dxPLly0VBQYHO+t98843w8fER1tbWwt3dXYwYMUJcu3btie0uXLhQABA7duzQmf/4UUmJiYmiX79+Qq1WC7VaLfz9/cWaNWvE888/L/z9/Yt9T9Haix5RpdFoxOzZs0WdOnWEjY2NaNeunYiIiNB5z88//yx8fX2FUqkULi4uYsCA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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 训练过程可视化\n",
    "test_score = np.zeros((params[\"n_estimators\"],), dtype=np.float64)\n",
    "for i, y_pred in enumerate(reg.staged_predict(X_test)):\n",
    "    test_score[i] = reg.loss_(y_test, y_pred)\n",
    "\n",
    "fig = plt.figure(figsize=(4, 4))\n",
    "plt.subplot(1, 1, 1)\n",
    "plt.title(\"Deviance\")\n",
    "# plt.plot(np.arange(params[\"n_estimators\"]) + 1, reg.train_score_, \"b-\", label=\"Training Set Deviance\", )\n",
    "plt.plot(np.arange(params[\"n_estimators\"]) + 1, test_score, \"r-\", label=\"Test Set Deviance\")\n",
    "plt.legend(loc=\"upper right\")\n",
    "plt.xlabel(\"Boosting Iterations\")\n",
    "plt.ylabel(\"Deviance\")\n",
    "fig.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0621cae4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The mean squared error (MSE) on test set: 0.2397\n",
      "The R^2 on test set: 0.9969\n"
     ]
    }
   ],
   "source": [
    "# 计算MSE和拟合优度R^2\n",
    "train_mse = mean_squared_error(y_train, reg.predict(X_train))\n",
    "test_mse = mean_squared_error(y_test, reg.predict(X_test))\n",
    "train_score = reg.score(X_train,y_train)\n",
    "test_score = reg.score(X_test,y_test)\n",
    "# print(\"The mean squared error (MSE) on train set: {:.4f}\".format(train_mse))\n",
    "print(\"The mean squared error (MSE) on test set: {:.4f}\".format(test_mse))\n",
    "# print(\"The R^2 on train set: {:.4f}\".format(train_score))\n",
    "print(\"The R^2 on test set: {:.4f}\".format(test_score))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "73ba9ea6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>F_1</th>\n",
       "      <th>F_2</th>\n",
       "      <th>F_3</th>\n",
       "      <th>F_4</th>\n",
       "      <th>F_5</th>\n",
       "      <th>F_6</th>\n",
       "      <th>F_7</th>\n",
       "      <th>F_8</th>\n",
       "      <th>F_9</th>\n",
       "      <th>F_10</th>\n",
       "      <th>...</th>\n",
       "      <th>F_26</th>\n",
       "      <th>F_27</th>\n",
       "      <th>F_28</th>\n",
       "      <th>F_29</th>\n",
       "      <th>F_30</th>\n",
       "      <th>F_31</th>\n",
       "      <th>F_32</th>\n",
       "      <th>F_33</th>\n",
       "      <th>F_34</th>\n",
       "      <th>F_35</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.839</td>\n",
       "      <td>-0.857</td>\n",
       "      <td>-0.827</td>\n",
       "      <td>-0.834</td>\n",
       "      <td>-0.833</td>\n",
       "      <td>-0.852</td>\n",
       "      <td>0.733</td>\n",
       "      <td>1.155</td>\n",
       "      <td>1.192</td>\n",
       "      <td>0.163</td>\n",
       "      <td>...</td>\n",
       "      <td>0.127</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.055</td>\n",
       "      <td>0.373</td>\n",
       "      <td>0.010</td>\n",
       "      <td>-0.460</td>\n",
       "      <td>-0.527</td>\n",
       "      <td>-0.521</td>\n",
       "      <td>-0.603</td>\n",
       "      <td>-1.568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.776</td>\n",
       "      <td>-0.776</td>\n",
       "      <td>-0.721</td>\n",
       "      <td>-0.770</td>\n",
       "      <td>-0.762</td>\n",
       "      <td>-0.792</td>\n",
       "      <td>0.281</td>\n",
       "      <td>0.891</td>\n",
       "      <td>1.009</td>\n",
       "      <td>0.306</td>\n",
       "      <td>...</td>\n",
       "      <td>0.141</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.073</td>\n",
       "      <td>0.333</td>\n",
       "      <td>0.012</td>\n",
       "      <td>-0.396</td>\n",
       "      <td>-0.456</td>\n",
       "      <td>-0.471</td>\n",
       "      <td>-0.463</td>\n",
       "      <td>-1.686</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.725</td>\n",
       "      <td>-0.717</td>\n",
       "      <td>-0.724</td>\n",
       "      <td>-0.755</td>\n",
       "      <td>-0.730</td>\n",
       "      <td>-0.758</td>\n",
       "      <td>0.814</td>\n",
       "      <td>1.498</td>\n",
       "      <td>0.676</td>\n",
       "      <td>0.210</td>\n",
       "      <td>...</td>\n",
       "      <td>0.126</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.070</td>\n",
       "      <td>0.322</td>\n",
       "      <td>0.009</td>\n",
       "      <td>-0.373</td>\n",
       "      <td>-0.444</td>\n",
       "      <td>-0.453</td>\n",
       "      <td>-0.569</td>\n",
       "      <td>-1.526</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.742</td>\n",
       "      <td>-0.733</td>\n",
       "      <td>-0.735</td>\n",
       "      <td>-0.749</td>\n",
       "      <td>-0.755</td>\n",
       "      <td>-0.772</td>\n",
       "      <td>0.664</td>\n",
       "      <td>1.400</td>\n",
       "      <td>0.487</td>\n",
       "      <td>0.598</td>\n",
       "      <td>...</td>\n",
       "      <td>0.185</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.076</td>\n",
       "      <td>0.324</td>\n",
       "      <td>0.018</td>\n",
       "      <td>-0.374</td>\n",
       "      <td>-0.453</td>\n",
       "      <td>-0.453</td>\n",
       "      <td>-0.623</td>\n",
       "      <td>-1.511</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-1.067</td>\n",
       "      <td>-1.117</td>\n",
       "      <td>-1.098</td>\n",
       "      <td>-1.006</td>\n",
       "      <td>-1.024</td>\n",
       "      <td>-1.052</td>\n",
       "      <td>-0.378</td>\n",
       "      <td>-0.408</td>\n",
       "      <td>-0.125</td>\n",
       "      <td>-0.001</td>\n",
       "      <td>...</td>\n",
       "      <td>0.086</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.317</td>\n",
       "      <td>0.245</td>\n",
       "      <td>0.005</td>\n",
       "      <td>-0.684</td>\n",
       "      <td>-0.745</td>\n",
       "      <td>-0.669</td>\n",
       "      <td>-1.492</td>\n",
       "      <td>-1.873</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 35 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     F_1    F_2    F_3    F_4    F_5    F_6    F_7    F_8    F_9   F_10  ...  \\\n",
       "0 -0.839 -0.857 -0.827 -0.834 -0.833 -0.852  0.733  1.155  1.192  0.163  ...   \n",
       "1 -0.776 -0.776 -0.721 -0.770 -0.762 -0.792  0.281  0.891  1.009  0.306  ...   \n",
       "2 -0.725 -0.717 -0.724 -0.755 -0.730 -0.758  0.814  1.498  0.676  0.210  ...   \n",
       "3 -0.742 -0.733 -0.735 -0.749 -0.755 -0.772  0.664  1.400  0.487  0.598  ...   \n",
       "4 -1.067 -1.117 -1.098 -1.006 -1.024 -1.052 -0.378 -0.408 -0.125 -0.001  ...   \n",
       "\n",
       "    F_26  F_27   F_28   F_29   F_30   F_31   F_32   F_33   F_34   F_35  \n",
       "0  0.127   0.0  0.055  0.373  0.010 -0.460 -0.527 -0.521 -0.603 -1.568  \n",
       "1  0.141   0.0  0.073  0.333  0.012 -0.396 -0.456 -0.471 -0.463 -1.686  \n",
       "2  0.126   0.0  0.070  0.322  0.009 -0.373 -0.444 -0.453 -0.569 -1.526  \n",
       "3  0.185   0.0  0.076  0.324  0.018 -0.374 -0.453 -0.453 -0.623 -1.511  \n",
       "4  0.086   0.0  0.317  0.245  0.005 -0.684 -0.745 -0.669 -1.492 -1.873  \n",
       "\n",
       "[5 rows x 35 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_bank = pd.read_csv(\"./dataset/node_test_4_A.csv\") # 读取文件\n",
    "testX=df_bank.iloc[:,2:]\n",
    "testX.head() #显示新的特征集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d1f6de02",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_test_pred = reg.predict(testX)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0af9ac95",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[60.02898551 62.23208016 62.50766445 ... 85.27840013 85.43829513\n",
      " 86.73529189]\n"
     ]
    }
   ],
   "source": [
    "print(y_test_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "16706a1a",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_predictions = pd.read_csv(\"predictions_BILSTM_32_1200_4.pth.csv\",delimiter='\\t')\n",
    "\n",
    "# Assuming the 'consumption_level' column is present in the CSV\n",
    "df_predictions['consumption_level'] = y_test_pred\n",
    "\n",
    "# Save the updated DataFrame back to a CSV file\n",
    "df_predictions.to_csv(\"predictions_BILSTM_32_1200_4.pth_UPDATED.csv\",sep='\\t', index=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:PyTorch]",
   "language": "python",
   "name": "conda-env-PyTorch-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
